﻿using System;
using Utils;

namespace Plugins.UserControls
{
	[Serializable]
	public class StockParametersSelectorData : PropertyChangedNotifierCopyable<StockParametersSelectorData>, ICloneable<StockParametersSelectorData>
	{
		#region Attributes

		private decimal _percentageFee;
		private decimal _fixedFeePerItem;
		private decimal _fixedFeePerOperation;
		private decimal _percentageReserve;
		private decimal _fixedReserve;
		private decimal _valueMultiplier;

		#endregion

		#region Properties

		public decimal PercentageFee
		{
			get
			{
				return _percentageFee;
			}
			set
			{
				if (_percentageFee != value)
				{
					_percentageFee = value;
					base.OnPropertyChanged("PercentageFee");
				}
			}
		}

		public decimal FixedFeePerItem
		{
			get
			{
				return _fixedFeePerItem;
			}
			set
			{
				if (_fixedFeePerItem != value)
				{
					_fixedFeePerItem = value;
					base.OnPropertyChanged("FixedFeePerItem");
				}
			}
		}

		public decimal FixedFeePerOperation
		{
			get
			{
				return _fixedFeePerOperation;
			}
			set
			{
				if (_fixedFeePerOperation != value)
				{
					_fixedFeePerOperation = value;
					base.OnPropertyChanged("FixedFeePerOperation");
				}
			}
		}

		public decimal PercentageReserve
		{
			get
			{
				return _percentageReserve;
			}
			set
			{
				if (_percentageReserve != value)
				{
					_percentageReserve = value;
					base.OnPropertyChanged("PercentageReserve");
				}
			}
		}

		public decimal FixedReserve
		{
			get
			{
				return _fixedReserve;
			}
			set
			{
				if (_fixedReserve != value)
				{
					_fixedReserve = value;
					base.OnPropertyChanged("FixedReserve");
				}
			}
		}

		public decimal ValueMultiplier
		{
			get
			{
				return _valueMultiplier;
			}
			set
			{
				if (_valueMultiplier != value)
				{
					_valueMultiplier = value;
					base.OnPropertyChanged("ValueMultiplier");
				}
			}
		}

		#endregion

		#region ICloneable

		public StockParametersSelectorData Clone()
		{
			return (StockParametersSelectorData)this.MemberwiseClone();
		}

		#endregion
	}
}
